iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0

關於圖像生成模型,先前已經介紹過 GAN、VAE 和 flow-based model,而從今天開始要介紹的是第四種模型 diffusion model(DM),現在非常知名的圖像生成模型 stable diffusion 就可以算是 diffusion model 的變體呢!/images/emoticon/emoticon08.gif

一般講到 diffusion model 多是在講 2020 年提出的 Denoising Diffusion Probabilistic Models,今天簡介的也是這個模型~那我們就開始吧!

Diffusion model 的運作方式

下圖是 diffusion model 的架構圖:
https://ithelp.ithome.com.tw/upload/images/20230926/20162522VEjAkKBDvT.jpg

簡單來說,我們會輸入和預計生成影像相同大小的雜訊給模型,經過一次又一次降噪(denoise)的過程,影像的內容就會逐漸浮現。

Denoise 會有好幾個階段,使用的都是同一個 denoise 模組。但是不同階段影像中的噪聲嚴重程度不同,單純用同一個 denoise 模組效果可能會不太好,因此我們除了輸入待降噪的影像給模型以外,還要輸入一個代表這是哪個降噪階段的數字。

而一個 denoise 模組內部的結構如下圖:
https://ithelp.ithome.com.tw/upload/images/20230926/201625222U86WQRlHG.jpg

Denoise 模組內會有一個 noise predictor 預測輸入影像中的 noise 長什麼樣,然後再將輸入影像減去預測的 noise,就會得到降噪後的影像了!/images/emoticon/emoticon12.gif

看到這裡大家可能會有一個疑問:為什麼不讓 denoise 模組直接學習如何預測一張降噪後的影像呢?這是因為讓模型學習預測 noise 會是比較簡單的,而要模型預測一張降噪後的圖比較困難,產生影像的效果可能就不太好。

如何訓練 diffusion model

要訓練 diffusion model 生成影像,其實就是在訓練其中 noise predictor 預測影像中應該去除的 noise。然而,我們要怎麼得到 denoise 前後的成對影像來訓練模型呢?

其實準備訓練資料很簡單,我們可以把蒐集到的真實影像一步一步加上 noise,並把加上 noise 前的影像作為模型的學習目標,我們就可以訓練 diffusion model 了~

順帶一提,在 diffusion model 中,加噪音的過程會被稱為 forward process,而 denoise 的過程則會被稱為 reverse process。

怎麼讓 diffusion model 根據文字生圖(text-to-image)

實際在應用圖像生成模型時,我們都還是希望可以輸入一些文字指令,模型就能依據文字內容產生影像。因此在針對 text-to-image 任務訓練 diffusion model 時,我們會需要準備有文字標註的影像,而文字也會作為模型的輸入:

https://ithelp.ithome.com.tw/upload/images/20230926/20162522l0dCpSJJj3.jpg

如上圖,我們總共會將待降噪影像、文字標註和 denoise 階段三項資訊都輸入模型,讓模型輸出一個降噪後比較清晰的影像~

當然要怎麼樣讓模型可以吃進文字、取得文字的意涵,進而連結到視覺的資訊,其實沒有那麼簡單,這在未來介紹 stable diffusion 的時候應該會提到~/images/emoticon/emoticon13.gif

今天就先這樣啦~明天開始會介紹 diffusion model 比較詳細演算法!


上一篇
[Day 16] Glow: 改良的 flow-based model
下一篇
[Day 18] 淺談 Diffusion Model 的演算法
系列文
圖像生成 AI 的原理與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言